"""
此方法没有任何和实例、类相关的部分，可以作为一个独立函数使用
某些场景下，从业务逻辑来说又属于类的一部分
静态方法实际案例
"""
# 多轮比赛，每轮由两个不同的英雄对打
class Game:

    def __init__(self, first_hero, second_hero):
        self.first_hero = first_hero
        self.second_hero = second_hero

    # fight 有和实例变量交互的部分，所以需要定义一个普通的方法
    def fight(self):
        print(f"本轮比赛开始，由{self.first_hero}VS{self.second_hero}")
    # start 没有和类和实例交互的部分，那么就可以使用 staticmethod
    @staticmethod
    def start():
        print("游戏开始")

Game.start()
Game1 = Game("Bob", "Mary")
Game2 = Game("Mike", "Herry")
Game1.fight()
Game2.fight()

# static 使用场景
class HeroFactory:
    # staticmethod 使用场景，
    # 方法所有涉及到的逻辑都没有使用实例方法或者实例变量的时候
    # 伪代码
    @staticmethod
    def create_hero(hero):
        if hero == "ez":
            return EZ()
        elif hero == "jinx":
            return Jinx()
        elif hero == "timo":
            return Timo()
        else:
            raise Exception("此英雄不在英雄工厂当中")

